专利摘要:
特定の実施態様において、正規化ロジック回路において正規化されるべきオペランド(該オペランドは複数のビットを含む)を受信することを含む方法が開示される。本方法は、前記オペランドの値が0に等しい場合に、0出力を生成し、前記値が0に等しくない場合に、前記オペランドの先行ビットのカウントより1少ない数を表す出力値を生成することを更に含む。
公开号:JP2011509491A
申请号:JP2010542362
申请日:2009-01-09
公开日:2011-03-24
发明作者:クリシバサン、シャンカー;コドレスキュ、ルシアン;ジェング、マオ;プロンケ、エリッチ・ジェイ.
申请人:クゥアルコム・インコーポレイテッドQualcomm Incorporated;
IPC主号:G06F7-00
专利说明:

[0001] 本開示は、一般に正規化カウントを判定するプロセッサ及び方法に関係する。]
背景技術

[0002] コンピュータ・アプリケーションにおいて、数値計算は、広範囲の値に及ぶ数をもたらす場合がある。二進数で動作するプロセッサ内部で、広範囲の値を網羅(encompass)するように値を基準化(scale)するために、正規化(normalization)が使用される場合がある。例えば、統計計算において、ある値の範囲(例えば、0〜1/2)を、第2の値の範囲(例えば、0〜1)に基準化することは、望ましい場合がある。]
[0003] 一般に、正規化プロセス又は命令は、入力又は出力信号を基準化又は調整(adjust)する自動利得制御のために使用されることがある。例えば、無線電話において、正規化命令は、スピーカ出力のボリューム又はマイク入力に関連するボリュームを調整するために使用されることがある。他の特定の例において、正規化オペレーションは、例えば対数関数のような数学関数を推定するために使用されることがある。特定の例において、正規化命令は、符号付きの値の連続する先行ビット(leading bits)の数をカウントする。その連続する先行ビットの数が、ある値をその連続する先行ビットのカウント数だけ左側にシフトすることによってその値を正規化するために使用されると、その値に関連する符号ビットが失われることがある。したがって、その結果として生じるシフトされた数は、誤っている可能性がある。]
[0004] 特定の実施態様において、正規化されるべきオペランド(該オペランドは複数のビットを含む)を受信することを含む方法が開示される。本方法は、前記オペランドの値が0に等しい場合に、0出力を生成することと、前記値が0に等しくない場合に、前記オペランドの先行ビットのカウントから1を減じた値を表す出力値を生成することを更に含む。]
[0005] 他の特定の実施態様において、正規化命令を実行するように構成された命令実行ユニットを含むプロセッサが開示される。前記命令実行ユニットは、複数のビットを含むオペランドを受信するための入力と、複数のシフトされたビットを生成するために、前記複数のビットを左側に1ビットシフトする、前記入力に接続されたシフター回路とを含む。前記命令実行ユニットは、前記複数のシフトされたビットを受信し且つ前記複数のシフトされたビットの先行ビットの数をカウントする先行ビット・カウント回路を更に含む。該先行ビット・カウント回路は、先行ビットの数から1を減じた値を表しているカウントを出力へ供給する。]
[0006] 更に他の特定の実施態様において、入力値を正規化するために、ある命令がプロセッサにより実行可能である。前記命令は、入力の値を判定する実行ユニットにより実行可能な第1の命令を含む。前記命令は、前記入力における前記判定された値が0である場合に0出力を生成する実行ユニットにより実行可能な第2の命令を含む。前記命令はまた、前記判定された値が非0である場合にビットの先行数のカウントから1を減じた値を表す正規化量を生成する実行ユニットにより実行可能な第3の命令を含む。]
[0007] 更に他の特定の実施態様において、複数のビットを含むオペランドを受信することと、前記シフトされた複数のビットを生成するために、前記複数のビットを左側に1ビットシフトすることと、前記シフトされた複数のビットの最下位ビットに0値を挿入することを含む方法が開示される。前記方法は、前記シフトされた複数のビットにおけるビットの先行数をカウントすることと、前記受信された複数のビットが非0の値を持つ場合に前記ビットの先行数から1を減じた値を表すカウントを出力することを更に含む。]
[0008] 他の特定の実施態様において、複数のビットを含むオペランドを受信するための手段を含み、また、前記オペランドの値が0に等しい場合に、0出力を生成するための手段を含むプロセッサが、開示される。前記プロセッサは、前記オペランドの値が0に等しくない場合に、前記オペランドの先行ビットのカウントから1を減じた値を表す出力値を生成するための手段を更に含む。]
[0009] 説明された回路デバイス及び方法の実施態様により与えられる一つの特定の利点は、0値が受信される場合に(すなわち、入力におけるビットの全てが0に等しい場合)に、ビットをシフトすることなく、出力において0値が供給されるということである。この例において、カウント値は、速く且つ減少した電力消費で、出力されても良い。]
[0010] 他の特定の利点は、正しい値を供給するために、選択されたビットを出力においてマスクすることによって誤ったデータが削除されるという点で、提供される。]
[0011] 更に他の特定の利点は、先行ビットがカウントされても良く、そして、プロセッサが、同一の回路を使用して、先行1又は先行0をカウントすることを可能にするという点で、提供される。]
[0012] 本開示の他の態様、利点及び特徴は、以下のセクション(図面の簡単な説明、詳細な説明、及び特許請求の範囲)を含む本出願全体のレビューの後、明らかになるであろう。]
図面の簡単な説明

[0013] 図1は、正規化量(normalization amount)を判定するように構成された正規化ロジック回路を備えた実行ユニットを含むシステムの特定の具体例のブロック図である。
図2は、正規化カウント(normalization count)を判定するように構成された正規化ロジック回路を含む回路デバイスの特定の具体例の図である。
図3は、正規化カウントを判定するように構成された正規化ロジック回路を含む回路デバイスの第2の特定の具体例の図である。
図4は、正規化カウントを判定する方法の特定の具体例のフローチャートである。
図5は、正規化カウントを判定する方法の第2の特定の具体例のフローチャートである。
図6は、正規化カウントを判定する方法の第3の特定の具体例のフローチャートである。
図7は、正規化量を判定するように構成された正規化回路を有する実行ユニットを含む無線通信デバイスの具体例のブロック図である。] 図1 図2 図3 図4 図5 図6 図7
詳細な説明

[0014] 図1は、正規化量を判定するように構成された正規化ロジック回路を備えた実行ユニットを含む処理システム100の特定の具体例のブロック図である。処理システム100は、バス・インタフェース104を介して命令キャッシュ106及びデータ・キャッシュ112と通信するように構成されたメモリ102を含む。命令キャッシュ106は、バス110によりシーケンサ114に接続される。命令キャッシュ106は、正規化命令116を記憶することができる。正規化命令116は、バス110を介してシーケンサ114に与えられることができる。処理システム100はまた、割り込みを受理するか否かを判定し及び命令の実行を制御するシーケンサ114内の制御ロジックによりアクセスされることができるビット群を記憶する監視制御レジスタ群132及びグローバル制御レジスタ群134を含んでも良い。] 図1
[0015] 特定の実施態様において、命令キャッシュ106は、複数のカレント命令レジスタ(current instruction registers)を介してシーケンサ114に接続される。それらは、バス110に接続されても良く、また、処理システム100の特定のスレッド群に関連していても良い。特定の実施態様において、処理システム100は、六つのスレッドを含むインターリーブされたマルチスレッドのプロセッサである。]
[0016] シーケンサ114は、第1の命令実行ユニット118、第2の命令実行ユニット120、第3の命令実行ユニット122、及び、第4の命令実行ユニット124に接続される。各々の命令実行ユニット118,120,122及び124は、第2のバス128を介して汎用レジスタ・ファイル126に接続されることができる。汎用レジスタ・ファイル126はまた、第3のバス130を介して、シーケンサ114、データ・キャッシュ112、及びメモリ102に接続されることができる。]
[0017] 第1の実行ユニット118は、正規化ロジック回路136を含み、第2の実行ユニット120は、正規化ロジック回路138を含む。特定の実施態様において、実行ユニット118,120,122及び124の各々が、正規化ロジック回路を含んでも良い。示された実施態様において、実行ユニット118及び120は、複数のビットに関係する正規化カウントを提供するために、正規化ロジック回路136及び138を利用するように構成される。]
[0018] 特定の具体例において、シーケンサ114は、正規化命令116を、第1の実行ユニット118に与える。正規化命令116の受信に応答して、第1の実行ユニット118は、オペランドを検索し、該オペランドのビットの先行数(leading number)から1を減じた値(すなわち、ビットの先行数のカウントから1を減じた値)をカウントするために、正規化ロジック回路136を使用する。正規化ロジック回路136は、オペランドのすべてのビットが0である場合に、0値を選択的に出力し、オペランドのいずれかのビットが非0である場合に、ビットの先行数のカウントから1を減じた値を表す数を選択的に出力するように構成される。ビットの先行数のカウントは、同一の値をもつ連続するビット(最上位ビットで始まり且つ最上位ビットを含む)の数を特定(identify)することができる。その数は、オペランドのデータ値を基準化又はさもなければ調整するための他の命令を実行する際に使用されても良い。例えば、オペランドが0〜1/2の範囲の値を表す場合に、その数は、オペランドを0〜1の範囲に基準化するために使用されても良い。]
[0019] 特定の具体例において、正規化ロジック回路136及び138は、先行1カウント回路(leading ones counting circuits)、先行0カウント回路(leading zeros counting circuits)、又は、それらの任意の組み合せ(図示せず)を含んでも良い。特定の実施態様において、正規化ロジック回路136及び138は、(例えば、図2中に示される先行ゼロ・カウンタ220のような)先行0カウント回路を含んでも良い。この例において、先行ビットが1であるならば、正規化ロジック回路136及び138は、先行0をカウントする前にオペランドの補数演算をする(complement)ロジック回路を含んでも良い。他の特定の実施態様において、正規化ロジック回路136及び138は、先行1をカウントし、かつ、先行0をカウントし、そして、いずれであってもカウントがより大きいものを選択するように構成される。2の補数(two’s complement numbers)に関して、負数については、先行0の数が0であり、正数については、先行1の数が0である。それゆえ、先行ビットの数は、オペランドの符号、大きさ、又は両方を判断するために使用されても良い。] 図2
[0020] 特定の実施態様において、正規化命令116は、二つの状況を含む:1)入力オペランドの値が0であるならば、0を出力する;及び2)入力オペランドの値が非0であるならば、オペランドの先行ビットのカウントから1を減じた値を出力する。正規化命令116を実装するアセンブリ・コードの例は、下の表1に示される。
表1:例示的な正規化命令
if (Rs == 0) {
Rd = 0;
} else {
Rd=(max(count_leading_ones(Rs), count_leading_zeros(Rs)))-1);
};
表1において、ソース・レジスタの値(Rs)が0に等しいならば、デスティネーション・レジスタ(Rd)は0にセットされる。さもなければ、ソース・レジスタの値における先行1のカウント及び先行0のカウントが、いずれのカウントが大きいかを判定するために、比較される。特に、先行1のカウント又は先行0のカウントのいずれかは、0に等しく、他のカウントは、正数である。正数であるカウントは、1を減じられて、デスティネーション・レジスタに記憶される。]
[0021] 特定の実施態様において、表1に示された正規化命令は、入力の値を判定する(すなわち、Rs==0かどうか判定する)ように構成された第1のオペレーションを含む。正規化命令はまた、入力における判定された値が0(すなわち、Rd=0)である場合に0出力を生成するように構成された第2のオペレーションを含む。正規化命令は、判定された値が非0である場合に、ビットの先行数のカウントから1を減じた値(すなわち、Rd=(max(count_leading_ones(Rs), count_leading_zeros(Rs)))-1)を表す正規化量を生成するように構成された第3のオペレーションを更に含む。特定の例において、0出力又はカウントは、プロセッサの単一の命令サイクルにおいて生成される。特定の例において、単一の命令サイクルは、実行スレッドの複数のステージ(リード・レジスタ・ファイル・ステージ、デコード・ステージ、1又は複数の実行ステージ、及び、ライト・バック・ステージを含む)を表すことができる。特定の実施態様において、正規化命令は、更なるオペレーション、マイクロ命令、又は、それらの任意の組み合せを含むことができる。他の特定の実施態様において、正規化命令は、更なるマイクロ命令又はオペレーションを、発生させる(spawn)ことができるか、又はさもなければ起動するすることができる。特定の例において、正規化命令は、正規化量に従って値を左側へシフトするように正規化量を利用するマイクロ命令の実行を開始することができる。]
[0022] 図2は、正規化カウントを判定するように構成された正規化ロジック回路202を含む回路デバイス200の特定の具体例の図である。正規化ロジック回路202は、例えば最上位ビット224及び複数の他のビット226を含むオペランドのような入力204を受信するように構成される。正規化ロジック回路202は、正規化カウント206を生成するために入力204を処理するように構成される。正規化カウント206は、入力204における値が0である場合における0値を表し、あるいは、入力204のビットの先行数のカウントから1を減じた値を表す。正規化ロジック回路202は、シフター回路208を含む。シフター回路208は、双方向シフター回路であっても良い。特定の例において、シフター回路208は、複数のシフトされたビットを生成するために、受信されたビット群を左側に1ビットシフトし、0値を最下位ビット位置に挿入するように構成される。] 図2
[0023] 正規化ロジック回路202は、入力204から最上位ビット224を抽出するように構成された最上位ビット(MSB)抽出回路236を含む。正規化ロジック回路202はまた、複数の排他的ORゲート210,212,214,216及び218を含む。複数の排他的ORゲート210,212,214,216及び218の各々は、最上位ビット224を受信するためにMSB抽出回路236に接続された第1の入力を含み、また、複数のシフトされたビットのそれぞれのビットを受信するためにシフター回路208に接続された第2の入力を含む。特定の例において、最上位ビット224が1の値を持つならば、排他的ORゲート210,212,214,216及び218の各々は、複数のシフトされたビットのそれぞれのビットの補数演算をする。最上位ビット224が0の値を持つならば、排他的ORゲート210,212,214,216及び218の各々は、複数のシフトされたビットのそれぞれのビットを通過させる。]
[0024] 正規化ロジック回路202は、先行ゼロ・カウンタ220及び論理ANDゲート222を含む。先行ゼロ・カウンタ220は、複数のシフトされたビット又は複数のシフトされたビットの相補バージョン(complemented version)のいずれかを表すオペランドを受信するために、排他的ORゲート210,212,214,216及び218の各々の出力に接続される。先行ゼロ・カウンタ220は、オペランドにおける連続する0の先行数をカウントし、リード群(leads)230及び232を介して、連続する0の先行数を表すカウントを出力する。論理ANDゲート222は、リード230における値を0値228(すなわち、電気アース)で論理的にANDすることによって、リード230におけるカウントの最上位ビットをマスクする。マスクされた出力234(すなわち、0値)及びリード群232の値は、正規化ロジック回路202の出力における正規化カウント206として与えられる。一般に、先行ゼロ・カウンタ220は、連続する0の先行数をカウントするように構成されるが、例えば、連続する1の先行数をカウントするための先行1カウンタ、連続するビットの先行数をカウントするための先行ビット・カウンタ、又は、それらの任意の組み合せのような、他のカウンタが使用されても良い。]
[0025] 特定の例において、正規化ロジック回路202は、例えば図1中に示されるプロセッサ100の実行ユニット118のように、プロセッサの実行ユニット内に存在しても良い。一つの実施態様において、ロジック回路202は、正規化カウント206を供給するように構成される。正規化カウント206は、特定のオペランドが、そのオペランドを正規化するためにシフトされるべきビットの数を表すカウントである。入力204が非0の値である場合に、シフト回路208は、ビット226を左側に1ビットシフトして、最上位ビットを取り除く。空けられた(vacated)位置に(すなわち、最下位ビットに)、0値が挿入される。この左側へのシフト及び0の挿入は、先行ビットのカウントから1を減じた値を提供する。入力がすべての0である場合には、先行ゼロ・カウンタ220は、例えば、すべての0をカウントしても良く、そして、最上位ビット位置に1を与える。特定の例において、最上位ビット位置における1の値は、32のシフト値を表しても良い。32個の連続する値を持つ唯一の入力値は、0の入力である。それゆえ、最上位ビット230は、要求されたゼロ結果を与えるために、論理ANDゲート222を使用して、マスクされる(すなわち、0にされる)。] 図1
[0026] 図3は、正規化カウントを判定するように構成された正規化ロジック回路302を含む回路デバイス300の第2の特定の具体例の図である。の特定の例において、正規化ロジック回路302は、図2中の正規化ロジック回路202と同じ回路を含む。しかし、正規化ロジック回路302は、シフター回路208に接続され且つMSB 224に接続され且つ0値をもつオペランドを検出するように構成された制御回路304を含む。正規化ロジック回路302はまた、入力204におけるオペランドの値が0である場合に正規化ロジック回路302の出力における正規化カウント206として0値を与えるために制御回路304に応答するゼロ回路306を含む。値が非0である場合に、ゼロ回路306は、先行ゼロ・カウンタ220の出力が、正規化カウント306として出力に通過されるのを可能にするパス・ゲートとして、動作しても良い。この特定の例において、制御回路304は、ゼロ回路306を使用して出力において0を与えるために、シフター回路208、複数の排他的ORゲート210,212,214,216及び218、並びに、先行ゼロ・カウンタ220をバイパスしても良い。] 図2 図3
[0027] 図4は、正規化カウントを判定する方法の特定の具体例のフローチャートである。402において、正規化されるべきオペランドが正規化ロジック回路において受信される。404へ進んで、オペランドの値が0に等しいならば、本方法は406へ進み、出力において0値が与えられる。例えば、オペランドが0に等しいとき、0値は基準化又は正規化される必要がないので、オペランドのシフト量は0であるべきである。特定の例において、制御回路は、オペランドの値を判定するため及びオペランドが0の値をもつ場合に0値を与える出力を制御するために、正規化ロジック回路内に与えられても良い。414へと続いて、本方法は終了する。] 図4
[0028] 404に戻って、オペランドの値が0に等しくないならば、本方法は408へ進み、数を判定するために、オペランドの先行ビットがカウントされる。特定の具体例において、ビットの先行数は、先行0をカウントするように構成された先行ゼロ・カウンタ回路を使用して、カウントされる。特定の例において、オペランドの最上位ビットが1に等しいならば、最上位ビットは、他のビット群の補数演算をするために使用されても良く、また、先行ゼロ・カウンタ回路は、オペランドの相補バージョンにおける0の個数をカウントしても良い。410まで移動して、シフト量を判定するために、その数から1が減じられる。特定の例において、他のビット群を左側に1ビットシフトし、最下位ビットの位置に0を挿入することによって、1が減じられる。412へと続いて、シフト量が出力へ与えられる。シフト量は、先行ビットの数のカウントから1を減じた値を表す。本方法は、414において終了する。]
[0029] 特定の例において、正規化されるべきオペランドを受信することは、プロセッサの実行ユニットにより実行可能である正規化命令を受信した後に起こっても良い。正規化命令は、オペランドが検索される可能性のあるソース・レジスタ・アドレスを含んでも良い。正規化命令は、単一の実行サイクルにおいてプロセッサにより実行可能である。特定の例において、408において数を判定するためにオペランドの先行ビットをカウントすること及びシフト量を判定するためにその数から1を減じることは、該オペランドの最上位ビットを抽出することと、複数のシフトされたビットを生成するために該オペランドの残りのビットを左側に1ビットシフトすることと、ゼロ値を該複数のシフトされたビットの最下位ビットに挿入することと、シフト量を生成するために該複数のシフトされたビットにおける0の先行数をカウントすることと、出力において該シフト量を与えるために該シフト量の最上位ビットをマスクすることを含んでも良い。特定の例において、該シフト量の最上位ビットをマスクすることは、最上位ビットを、論理0値(例えば、電気アース)に接続された第2の入力を含む論理ANDゲートの入力に与えることを含んでも良い。]
[0030] 図5は、正規化カウントを判定する方法の第2の特定の具体例のフローチャートである。502において、正規化されるべきオペランドが正規化ロジック回路において受信される(該オペランドは、複数のビットを含む)。504へ進んで、該複数のビットから最上位ビットが抽出される。506へと続いて、該複数のビットが左側に1ビットシフトされる。508まで移動して、複数のシフトされたビット又は複数のシフトされたビットの相補バージョンのうちの一つを表す値を生成するために、抽出された最上位ビットとシフトされた複数のビットの各々との排他的ORオペレーションが実行される。510まで進んで、数を生成するために、生成された値において0の先行数がカウントされる。512まで移動して、シフト量を生成するために、その数の最上位ビットがマスクされる。514へと続いて、出力においてシフト量が与えられる。ここで、オペランドが0に等しい場合に、そのシフト量は0であり、オペランドが非0値である場合に、そのシフト量は、ビットの先行数のカウントから1を減じた値である。本方法は、516において終了する。] 図5
[0031] 図6は、正規化カウントを判定する方法の第3の特定の具体例のフローチャートである。602において、本方法は、正規化されるべきオペランドを正規化ロジック回路において受信することを含む(該オペランドは、複数のビットを含む)。604へ進んで、該複数のビットの最上位ビットを取り除くために、該複数のビットが、左側に1ビットシフトされる。606まで移動して、第2の複数のビットを形成するために、該複数のシフトされたビットの最下位ビット位置に0値が挿入される。608へと続いて、複数のXOR出力ビットを生成するために、オペランドの最上位ビットを使用して、排他的ORオペレーションが、該第2の複数のビットの各々に適用される。610まで進んで、0の個数を判定するために、該複数のXOR出力ビットにおける0の先行数がカウントされる。612へ進んで、オペランドが非0である場合に0のカウントされた先行数から1を減じた値を表すシフト量を与えるために及びオペランドが0である場合に0値を与えるために、0の判定された数の最上位ビットがマスクされる。本方法は、614において終了する。] 図6
[0032] 図7は、正規化量を判定するように構成された正規化ロジック回路768をもつ実行ユニット764を含む無線通信デバイス700の具体例のブロック図である。正規化ロジック回路768は、図1、2及び3に関してそれぞれ説明された正規化ロジック回路136,202及び302と同様であっても良い。無線通信デバイス700は、正規化ロジック回路768を備えた実行ユニット764を持つデジタル・シグナル・プロセッサ(DSP)710を含むことができる。図1−6に関して説明されたように、正規化ロジック回路768は、入力におけるビットの先行数から1を減じた値を判定するために使用可能である。無線通信デバイス700はまた、DSP710にアクセス可能なメモリ732を含む。特定の実施態様において、正規化ロジック回路768は、実行ユニット764の単一の命令(実行)サイクル内で複数のデータ・ビットに関係する正規化カウントを与えるために、実行ユニット764により利用されても良い。] 図1 図7
[0033] 図7はまた、デジタル・シグナル・プロセッサ710に接続され且つディスプレイ728に接続されるディスプレイ・コントローラ726を示す。コーダ/デコーダ(CODEC)734はまた、デジタル・シグナル・プロセッサ710に接続されることができる。スピーカ736及びマイク738は、CODEC734に接続されることができる。] 図7
[0034] 図7はまた、無線コントローラ740は、デジタル・シグナル・プロセッサ710に接続されることができ且つ無線アンテナ742に接続されることができることを示す。特定の実施態様において、入力デバイス730及び電源744は、オンチップ・システム722に接続される。さらに、特定の実施態様において、図7中に示されるように、ディスプレイ728、入力デバイス730、スピーカ736、マイク738、無線アンテナ742、及び電源744は、オンチップ・システム722の外部に存在しても良い。しかし、各々は、オンチップ・システム722のコンポーネントに接続される。] 図7
[0035] 本明細書で開示された実施形態に関連して説明された、各種の説明的な論理ブロック、構成(configurations)、モジュール、回路、及び、アルゴリズムのステップは、電子回路用ハードウェア、コンピュータソフトウェア、又は、それらの組み合わせとして、実装されても良いことを、当業者はさらに理解できるであろう。このハードウェア及びソフトウェアの互換性をめいりょうに説明するために、各種の説明的なコンポーネント、ブロック、構成、モジュール、回路、及びステップが、一般に、それらの機能性の観点で、前述された。当該の機能性は、システム全体に課される特定のアプリケーション及びデザインの制約に応じて、ハードウェア又はソフトウェアとして実装される。当業者は、説明された機能性を、各々のアプリケーションのためのさまざまな方法で実装しても良いが、当該の実装の決定は、本範囲の範囲からの逸脱をもたらすものとして説明されるべきではない。]
[0036] 本明細書に開示された実施形態に関連して説明された方法又はアルゴリズムのステップは、直接、ハードウェアにより具体化されても良いし、プロセッサにより実行されるソフトウェアモジュールにより具体化されても良いし、又は、それら二つの組合せにより具体化されても良い。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、PROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、又は当該技術分野において周知の任意の他のフォームの記憶媒体に存在しても良い。例示的な記憶媒体は、プロセッサがその記憶媒体から情報を読み込み、また、それへ情報を書き込むことができるように、そのプロセッサに接続される。代わりに、記憶媒体は、プロセッサに一体化されていても良い。プロセッサ及び記憶媒体は、ASICにおいて存在してもよい。ASICは、コンピュータ・デバイス又はユーザ端末に存在しても良い。代案では、プロセッサ及び記憶媒体は、コンピュータ・デバイス又はユーザ端末の個別のコンポーネントとして存在しても良い。]
[0037] 開示された実施形態の前の説明は、当業者が開示された実施態様を製造又は使用できるようにするために提供される。これらの実施形態への種々の変形は、当業者には容易に明白になるであろう。また、本発明で定義された一般的な原理は、本開示の精神又は範囲から逸脱することなく、他の実施形態に適用されても良い。それゆえ、本開示は、本明細書で示された実施形態に限定されることが意図されているのではなく、以下の特許請求の範囲により定義されるような原理及び新規な特徴に合致する最も広い可能な範囲を与えられることが意図されている。]
权利要求:

請求項1
正規化ロジック回路において正規化されるべきオペランド(該オペランドは複数のビットを含む)を受信することと、前記オペランドの値が0に等しい場合に、0出力を生成することと、前記値が0に等しくない場合に、前記オペランドの先行ビットのカウントより1少ない数を表す出力値を生成することを含む方法。
請求項2
プロセッサの実行ユニットにより実行可能である正規化命令を受信することを更に含む請求項1の方法。
請求項3
前記オペランドは、前記正規化命令の受信後に、受信される請求項2の方法。
請求項4
前記0出力を生成することは、前記受信されたオペランドが0の値を持つことを判定することと、正規化ロジック回路の出力において0値を与えるための論理信号を生成することを更に含む請求項1の方法。
請求項5
前記オペランドの先行ビットの前記カウントより1少ない前記数を表す出力値を生成することは、前記オペランドから最上位ビットを抽出することと、複数のシフトされたビットを生成するために、前記オペランドの前記複数のビットのうちの残りのビットを左側へ1ビットシフトすることと、前記複数のシフトされたビットの最下位ビットに0値を挿入することと、シフト量を生成するために、前記複数のシフトされたビットにおける0の先行数をカウントすることと、出力値を生成するために、前記シフト量の最上位ビットをマスクすることを含む請求項1の方法。
請求項6
前記シフト量の前記最上位ビットをマスクすることは、論理0値に結合される第2の入力を含む論理ANDゲートの入力に対して前記最上位ビットを供給することを含む請求項5の方法。
請求項7
正規化命令を実行するように構成された命令実行ユニットを含むプロセッサにおいて、前記命令実行ユニットは、複数のビットを含むオペランドを受信するように構成された入力と、複数のシフトされたビットを生成するために、前記入力に接続され且つ前記複数のビットを左側に1ビットシフトするように構成されたシフター回路と、前記複数のシフトされたビットを受信し且つ前記複数のシフトされたビットの先行ビットの数をカウントするように構成された先行ビット・カウント回路(該先行ビット・カウント回路は、先行ビットの数から1を減じた値を表すカウントを出力へ供給する)とを含むプロセッサ。
請求項8
前記命令実行ユニットは、前記入力に接続され且つ前記オペランドから最上位ビットを抽出するように構成された最上位ビット抽出回路と、複数の排他的ORゲート(前記複数の排他的ORゲートの各々は、前記最上位ビットを受信するように構成された第1の入力、前記複数のシフトされたビットのそれぞれの一つを受信するように構成された第2の入力、及び、前記複数のシフトされたビットのそれぞれの一つの値又は前記値の補数を供給するように構成された出力を含む)とを含むロジック回路を更に含む請求項7のプロセッサ。
請求項9
前記先行ビット・カウント回路は、前記複数の排他的ORゲートの前記出力に接続された先行0カウント回路を含み、該先行0カウント回路は、前記複数の排他的ORゲートの前記出力から受信される0の先行数をカウントするように構成されるの請求項8のプロセッサ。
請求項10
前記先行ビットの数から1を減じた値を表す前記カウントの最上位ビットをマスクするように構成されたマスク回路を更に含む請求項9のプロセッサ。
請求項11
前記オペランドが0の値を持つかどうか判定するように構成され且つ前記出力において0値を供給するための制御信号を生成するように構成された制御回路を更に含む請求項7のプロセッサ。
請求項12
前記制御回路に応答し且つ前記制御回路からの制御信号に応答して前記出力において0値を供給するように構成されたゼロ回路を更に含む請求項11のプロセッサ。
請求項13
前記シフター回路は、双方向シフター回路である請求項7の回路デバイス。
請求項14
入力値を正規化するプロセッサにより実行可能な命令において、前記命令は、入力の値を判定する実行ユニットにより実行可能な第1の命令と、前記入力における前記判定された値が0である場合に0出力を生成する実行ユニットにより実行可能な第2の命令と、前記判定された値が非0である場合にビットの先行数のカウントから1を減じた値を表する正規化量を生成する実行ユニットにより実行可能な第3の命令とを含む命令。
請求項15
前記0出力又は前記カウントは、プロセッサの単一の命令サイクルにおいて生成される請求項14の命令。
請求項16
前記実行ユニットは、前記0出力を生成するように且つ前記正規化量を生成するように構成された正規化ロジック回路を含む請求項14の命令。
請求項17
前記カウントは、入力の大きさを表す請求項14の正規化量命令。
請求項18
正規化ロジック回路において複数のビットを含むオペランドを受信することと、シフトされた複数のビットを生成するために、前記複数のビットを左側に1ビットシフトすることと、前記シフトされた複数のビットの最下位ビットに0値を挿入することと、前記シフトされた複数のビットにおけるビットの先行数をカウントすることと、前記受信された複数のビットが非0の値を持つ場合に前記ビットの先行数から1を減じた値を表すカウントを出力することを含む方法。
請求項19
前記ビットの先行数を数えることは、前記受信された複数のビットの前記最上位ビットを抽出することと、前記受信された複数のビットの最上位ビットが1値を持つ場合に、相補の複数のビットを生成するために、前記シフトされた複数のビットの補数演算をすることと、前記相補の複数のビットにおける0の先行数をカウントすることを含む請求項18の方法。
請求項20
前記ビットの先行数をカウントすることは、前記シフトされた複数のビットにおける0の先行数をカウントすることを含む請求項18の方法。
請求項21
前記受信されたオペランドが0値を表す場合に、出力において0値を供給することを更に含む請求項18の方法。
請求項22
複数のビットを含むオペランドを受信するための手段と、前記オペランドの値が0に等しい場合に、0出力を生成するための手段と、前記オペランドの値が0に等しくない場合に、前記オペランドの先行ビットのカウントより1少ない数を表す出力値を生成するための手段とを含むプロセッサ。
請求項23
単一の実行サイクルにおいてプロセッサの実行ユニットにより実行可能である正規化命令を受信するための手段を更に含む請求項22のプロセッサ。
請求項24
前記0出力を生成することは、前記受信されたオペランドの値を判定するための手段と、前記判定された値が0である場合に、実行ユニットの出力において0値を供給するための論理信号を生成するための手段とを更に含む請求項22のプロセッサ。
請求項25
前記オペランドの先行ビットの前記カウントから1を減じた値を表す出力値を生成することは、前記オペランドから最上位ビットを抽出するための手段と、複数のシフトされたビットを生成するために、前記オペランドの残りのビットを左側に1ビットシフトするための手段と、前記複数のシフトされたビットの最下位ビットに0値を挿入するための手段と、シフト量を生成するために、前記複数のシフトされたビットにおける0の先行数をカウントするための手段と、前記カウントを生成するために、前記シフト量の最上位ビットをマスクするための手段とを含む請求項22のプロセッサ。
类似技术:
公开号 | 公开日 | 专利标题
JP6495220B2|2019-04-03|選択可能な副精度に対して、低減された電力要求を有する浮動小数点プロセッサ
US20150347089A1|2015-12-03|Microarchitecture for floating point fused multiply-add with exponent scaling
US8386755B2|2013-02-26|Non-atomic scheduling of micro-operations to perform round instruction
US5991785A|1999-11-23|Determining an extremum value and its index in an array using a dual-accumulation processor
US20140115350A1|2014-04-24|Power control device for processor
CN102067087B|2014-04-23|环路控制系统及方法
US7945607B2|2011-05-17|Data processing apparatus and method for converting a number between fixed-point and floating-point representations
Englander et al.2003|The architecture of computer hardware and systems software: An information technology approach
US5258943A|1993-11-02|Apparatus and method for rounding operands
JP5819380B2|2015-11-24|入力データ値に応じたfmaユニットにおける電力消費の低減
US6523057B1|2003-02-18|High-speed digital accumulator with wide dynamic range
JP5425041B2|2014-02-26|3個のソースオペランドを加算する加算命令
RU2447484C1|2012-04-10|Выполнение операций округления в соответствии с инструкцией
US7797363B2|2010-09-14|Processor having parallel vector multiply and reduce operations with sequential semantics
JP3467489B2|2003-11-17|Rsa符号化装置
ES2340527T3|2010-06-04|FLOATING EAT PROCESSOR WITH A SELECTABLE SUBPRECISION.
RU2656730C2|2018-06-06|Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
JP4953644B2|2012-06-13|正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法
US5598362A|1997-01-28|Apparatus and method for performing both 24 bit and 16 bit arithmetic
US20050027969A1|2005-02-03|Method for performing single instruction multiple data operations on packed data
AT413895B|2006-07-15|Digitale signalverarbeitungseinrichtung
US9608662B2|2017-03-28|Apparatus and method for converting floating-point operand into a value having a different format
US6564238B1|2003-05-13|Data processing apparatus and method for performing different word-length arithmetic operations
JP2011134304A|2011-07-07|ビット範囲分離命令、方法、および装置
US9367319B2|2016-06-14|System and method for a multi-schema branch predictor
同族专利:
公开号 | 公开日
CN101911008A|2010-12-08|
EP2243074A2|2010-10-27|
EP2243074B1|2018-12-19|
JP2014132485A|2014-07-17|
WO2009089410A3|2009-09-03|
CN101911008B|2016-08-10|
JP5735150B2|2015-06-17|
WO2009089410A2|2009-07-16|
KR20100105765A|2010-09-29|
US8631056B2|2014-01-14|
KR101252739B1|2013-04-12|
US20090177724A1|2009-07-09|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2011-11-24| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111122 |
2012-02-23| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120222 |
2012-03-01| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120229 |
2012-03-23| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120322 |
2012-03-30| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120329 |
2012-04-24| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120423 |
2012-05-02| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120501 |
2012-05-23| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120522 |
2012-10-24| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121023 |
2013-01-24| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130123 |
2013-01-31| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130130 |
2013-03-23| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130322 |
2013-04-01| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130329 |
2013-04-24| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130423 |
2013-10-30| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20131029 |
2014-02-28| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140227 |
2014-03-04| A761| Written withdrawal of application|Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20140303 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]